/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.zb.hms.base.util.messageUtil;

import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;

/**
 * 请求成功后向前台返回的数据
 * @Description
 * @author zb
 * @datetime 2017-7-30 20:34:05
 * @version V1.0
 * @serial JDK 1.8
 */
@Component
public class ResultMessage { 
	//标识
	 public  String type;
	 public String getType() {
			return type;
		}
	 public void setType(String type) {
			this.type = type;
		}
	//状态
     private  int status;
     public int getStatus(){
     	return this.status;
      }
     public ResultMessage setStatus(Integer status) {
         this.status=status;
         return  this;
     }    
     //数据
     private  Map<String,Object> data;
	 public Map<String,Object> getData() {
	   return data;
	}
	 /**
	  * 
	  * 自定义数据验证异常消息
	  * 多版本请换行描述
	  * @param msg
	  * @return ResultMessage
	  * @author : zb
	  * @date : 2017年8月25日 上午10:08:38
	  * @version V1.0
	  */
	  public ResultMessage setValidataResult(String msg) {
		    data=new HashMap<>();
	        this.data.put("validata",msg);
	        return  this;
	    }   
	  /**
	   * 
	   * 向返回数据中手动添加通知消息
	   * 多版本请换行描述
	   * @param meaasge
	   * @return ResultMessage
	   * @author : zb
	   * @date : 2017年8月25日 上午10:09:21
	   * @version V1.0
	   */
	    public ResultMessage setMessage(String meaasge) {
	    	 data=new HashMap<>();
	    	this.data.put("message", meaasge);
	        return this;
	    }
    /**
     * 返回前台数据状态码，100成功，200失败
     * @param status the status to set
     * @return 
     */ 
    public ResultMessage setValidataResult(BindingResult result) {
        if(result.getErrorCount()>0){
            this.status=200;
             data=new HashMap<>();
            this.data.put("validata",result.getAllErrors());}
        else{
            this.status=100;
        }
        return  this;
    }
}
